package com.bt.springboot.demo.algorithm;

import lombok.extern.slf4j.Slf4j;

/**
 * 查找算法
 *
 * @author zkx
 * @Date 2022/9/18 20:05
 */
@Slf4j
public class SearchDemo {

	public static void main(String[] args) {
		int[] arr = {4, 3, 1, 2, 5};
		log.info("{}", binarySearch(arr, 2));
	}

	/**
	 * 二分查找
	 *
	 * @param arr
	 * @param number
	 * @return
	 */
	public static int binarySearch(int[] arr, int number) {
		int start = 0;
		int end = arr.length - 1;
		// 定义一个循环不断的折中查找
		while (start <= end) {
			// 定位出中间元素的索引
			int middleIndex = (start + end) / 2;
			// 拿当前元素与中间元素值进行比较
			if (number > arr[middleIndex]) {
				// 大于 向右找
				start = middleIndex + 1;
			} else if (number < arr[middleIndex]) {
				// 小于 向左找
				end = middleIndex - 1;
			} else {
				return middleIndex;
			}
		}
		return -1;
	}
}
